package br.com.vti.sisp_sicrim.antigo.controller.relatorios;

import java.io.FileNotFoundException;
import java.text.ParseException;

import net.sf.jasperreports.engine.JRException;
import br.com.caelum.vraptor.Result;
import br.com.caelum.vraptor.interceptor.download.InputStreamDownload;
import br.com.vti.sisp_sicrim.antigo.model.SicTabelas;
import br.com.vti.sisp_sicrim.antigo.model.Sislac01;
import br.com.vti.sisp_sicrim.antigo.model.Sisll001;
import br.com.vti.sisp_sicrim.antigo.util.Relatorios;
import br.com.vti.sisp_sicrim.antigo.util.Sessao;
import br.com.vti.sisp_sicrim.antigo.util.UtilBean;

/**
 * Classe responsavel por encapsular o tratamento e as consistencias da tela
 * Tabpb001Report
 * 
 * @author Incode - Data: mai/2014
 * 
 */
public class Tabpb001Report {
	private String cabecaSeg;
	private String cabecaDet;
	private int dataCorrente;
	private int codtab;
	private String tabela;
	private Long dintabCodele; // DB
	private String diatabChalfa; // DB
	private String diatabDescel; // DB
	private Integer dintabDatapo; // DB
	private String diatabGrupel; // DB
	private Integer dintabMatfun; // DB
	private Integer dintabDatatu; // DB
	public String pesq;
	public String tab;
	public String cod;
	private String nroPagina;
	private Result result;
	private Sessao sessao;
	private Relatorios report;
	// Classes views
	SicTabelas vwDvetab = new SicTabelas();
	SicTabelas vwTabele = new SicTabelas();
	// Classes includes
	Sislac01 sislac01 = new Sislac01();
	Sisll001 sisll001 = new Sisll001();

	public Tabpb001Report() throws JRException, ParseException {
		inicializar();
	}

	public Tabpb001Report(Sessao sessao) throws JRException, ParseException {
		this.sessao = sessao;
		inicializar();
	}

	public void inicializar() throws JRException, ParseException {
		report = new Relatorios();
		cabecaSeg = "SECRETARIA DE ESTADO DA SEGURAN�A PUBLICA";
		cabecaDet = "SECRETARIA ADJUNTA DE TECNOLOGIA DA INFORMACAO - SEATI";
		dataCorrente = 0;
		codtab = 0;
		tabela = "";
		report.setNumeroRel(1, "C");
		{
			report.setNumeroLinhaRel(1, 1);
			{
				report.adicionaCampo(1, 1, "lit_1_1", "C", "", " ");
				report.setFimLinhaRel();
			}
			report.setNumeroLinhaRel(2, 3);
			{
				report.adicionaCampo(2, 60, "Cabecaseg", "X", "", "");
				report.adicionaCampo(119, 7, "lit_119_7", "C", "", "PAGINA:");
				report.adicionaCampo(127, 5, "nroPagina", "S", "ZZZZ99", "");
				report.setFimLinhaRel();
			}
			report.setNumeroLinhaRel(3, 2);
			{
				report.adicionaCampo(2, 60, "Cabecadet", "X", "", "");
				report.adicionaCampo(119, 14, "lit_119_14", "C", "", "REL.  TABPB001");
				report.setFimLinhaRel();
			}
			report.setNumeroLinhaRel(4, 3);
			{
				report.adicionaCampo(2, 50, "lit_2_50", "C", "", "SISTEMA DE INFORMACOES DE SEGURANCA PUBLICA - SISP");
				report.adicionaCampo(117, 5, "lit_117_5", "C", "", "DATA:");
				report.adicionaCampo(123, 8, "dataCorrente", "N", "99/99/9999", "");
				report.setFimLinhaRel();
			}
			report.setNumeroLinhaRel(5, 1);
			{
				report.adicionaCampo(2, 55, "lit_2_55", "C", "", "TABELA DE MUNICIPIOS DOS ESTADOS DA FEDERACAO DO BRASIL");
				report.setFimLinhaRel();
			}
			report.setNumeroLinhaRel(6, 3);
			{
				report.adicionaCampo(42, 3, "Codtab", "N", "Z99", "");
				report.adicionaCampo(46, 54, "Tabela", "X", "", "");
				report.adicionaCampo(124, 7, "lit_124_7", "C", "", "       ");
				report.setFimLinhaRel();
			}
			report.setNumeroLinhaRel(7, 1);
			{
				report.adicionaCampo(1, 1, "lit_1_1", "C", "", "-");
				report.setFimLinhaRel();
			}
			report.setNumeroLinhaRel(8, 6);
			{
				report.adicionaCampo(2, 13, "lit_2_13", "C", "", "COD.MUNICIPIO");
				report.adicionaCampo(19, 6, "lit_19_6", "C", "", "ESTADO");
				report.adicionaCampo(37, 33, "lit_37_33", "C", "", "NOME DO MUNICIPIO             CEP");
				report.adicionaCampo(104, 5, "lit_104_5", "C", "", "GRUPO");
				report.adicionaCampo(113, 7, "lit_113_7", "C", "", "MATRIC.");
				report.adicionaCampo(124, 8, "lit_124_8", "C", "", "ATUALIZ.");
				report.setFimLinhaRel();
			}
		}
		report.setNumeroRel(2, "D");
		{
			report.setNumeroLinhaRel(1, 7);
			{
				report.adicionaCampo(1, 12, "Dintabcodele", "N", "", "");
				report.adicionaCampo(19, 14, "Diatabchalfa", "X", "", "");
				report.adicionaCampo(37, 60, "Diatabdescel", "X", "", "");
				report.adicionaCampo(98, 8, "Dintabdatapo", "N", "", "");
				report.adicionaCampo(108, 1, "Diatabgrupel", "X", "", "");
				report.adicionaCampo(113, 7, "Dintabmatfun", "N", "", "");
				report.adicionaCampo(122, 8, "Dintabdatatu", "N", "99/99/9999", "");
				report.setFimLinhaRel();
			}
		}
		setCabecadet(cabecaDet);
		setCabecaseg(cabecaSeg);
	}

	public boolean validar() {
		// validar os campos recebidos da tela
		return true;
	}

	public String getCabecaseg() {
		return cabecaSeg;
	}

	public void setCabecaseg(String cabecaSeg) throws ParseException {
		this.cabecaSeg = cabecaSeg;
		report.adicionaValorReport("Cabecaseg", cabecaSeg);
	}

	public String getCabecadet() {
		return cabecaDet;
	}

	public void setCabecadet(String cabecaDet) throws ParseException {
		this.cabecaDet = cabecaDet;
		report.adicionaValorReport("Cabecadet", cabecaDet);
	}

	public int getDataCorrente() {
		return dataCorrente;
	}

	public void setDataCorrente(int dataCorrente) throws ParseException {
		this.dataCorrente = dataCorrente;
		report.adicionaValorReport("dataCorrente", dataCorrente);
	}

	public int getCodtab() {
		return codtab;
	}

	public void setCodtab(int codtab) throws ParseException {
		this.codtab = codtab;
		report.adicionaValorReport("Codtab", codtab);
	}

	public String getTabela() {
		return tabela;
	}

	public void setTabela(String tabela) throws ParseException {
		this.tabela = tabela;
		report.adicionaValorReport("Tabela", tabela);
	} // /

	public String getPesq() {
		return this.tab + this.cod;
	}

	public void setPesq(String pesq) throws ParseException {
		this.pesq = pesq;
		this.tab = UtilBean.subStr(pesq, 0, 3);
		report.adicionaValorReport("Tab", UtilBean.subStr(pesq, 0, 3));
		this.cod = UtilBean.subStr(pesq, 3, 12);
		report.adicionaValorReport("Cod", UtilBean.subStr(pesq, 3, 12));
	}

	public String getNroPagina() {
		return nroPagina;
	}

	public void setNroPagina(String nroPagina) throws ParseException {
		this.nroPagina = nroPagina;
		report.adicionaValorReport("nroPagina", nroPagina);
	}

	public void setPageSize(int pagesize) throws JRException {
		report.setPageSize(pagesize);
	}

	public void setLineSize(int linesize) {
		report.setLineSize(linesize);
	}

	public int getPageSize() {
		return report.getPageSize();
	}

	public int getPageLine() {
		return report.getPageLine();
	}

	public void saltaLinhas(int qtdLinhas) throws ParseException, JRException {
		report.saltaLinhas(qtdLinhas);
	}

	public void gravaRelatorio(int nroRel) throws ParseException, JRException {
		setNroPagina(String.valueOf(report.getPageNumber()));
		report.gravaRelatorio(report, nroRel, false);
	}

	public InputStreamDownload imprimir() throws FileNotFoundException, JRException {
		return report.imprimir();
	}

	public Long getDintabCodele() {
		return dintabCodele;
	}

	public void setDintabCodele(Long dintabCodele) throws ParseException {
		this.dintabCodele = dintabCodele;
		report.adicionaValorReport("dintabCodele", dintabCodele);
	}

	public String getDiatabChalfa() {
		return diatabChalfa;
	}

	public void setDiatabChalfa(String diatabChalfa) throws ParseException {
		this.diatabChalfa = diatabChalfa;
		report.adicionaValorReport("diatabChalfa", diatabChalfa);
	}

	public String getDiatabDescel() {
		return diatabDescel;
	}

	public void setDiatabDescel(String diatabDescel) throws ParseException {
		this.diatabDescel = diatabDescel;
		report.adicionaValorReport("diatabDescel", diatabDescel);
	}

	public Integer getDintabDatapo() {
		return dintabDatapo;
	}

	public void setDintabDatapo(Integer dintabDatapo) throws ParseException {
		this.dintabDatapo = dintabDatapo;
		report.adicionaValorReport("dintabDatapo", dintabDatapo);
	}

	public String getDiatabGrupel() {
		return diatabGrupel;
	}

	public void setDiatabGrupel(String diatabGrupel) throws ParseException {
		this.diatabGrupel = diatabGrupel;
		report.adicionaValorReport("diatabGrupel", diatabGrupel);
	}

	public Integer getDintabMatfun() {
		return dintabMatfun;
	}

	public void setDintabMatfun(Integer dintabMatfun) throws ParseException {
		this.dintabMatfun = dintabMatfun;
		report.adicionaValorReport("dintabMatfun", dintabMatfun);
	}

	public Integer getDintabDatatu() {
		return dintabDatatu;
	}

	public void setDintabDatatu(Integer dintabDatatu) throws ParseException {
		this.dintabDatatu = dintabDatatu;
		report.adicionaValorReport("dintabDatatu", dintabDatatu);
	}

}
